home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 November / Freeware November 1998.img / dist / fw_emacs.idb / usr / freeware / share / emacs / 19.34 / lisp / nndir.el.z / nndir.el
Lisp/Scheme  |  1998-10-27  |  3KB  |  100 lines

  1. ;;; nndir.el --- single directory newsgroup access for Gnus
  2. ;; Copyright (C) 1995,96 Free Software Foundation, Inc.
  3.  
  4. ;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
  5. ;; Keywords: news
  6.  
  7. ;; This file is part of GNU Emacs.
  8.  
  9. ;; GNU Emacs is free software; you can redistribute it and/or modify
  10. ;; it under the terms of the GNU General Public License as published by
  11. ;; the Free Software Foundation; either version 2, or (at your option)
  12. ;; any later version.
  13.  
  14. ;; GNU Emacs is distributed in the hope that it will be useful,
  15. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. ;; GNU General Public License for more details.
  18.  
  19. ;; You should have received a copy of the GNU General Public License
  20. ;; along with GNU Emacs; see the file COPYING.  If not, write to the
  21. ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  22. ;; Boston, MA 02111-1307, USA.
  23.  
  24. ;;; Commentary:
  25.  
  26. ;;; Code:
  27.  
  28. (require 'nnheader)
  29. (require 'nnmh)
  30. (require 'nnml)
  31. (require 'nnoo)
  32. (eval-when-compile (require 'cl))
  33.  
  34. (nnoo-declare nndir
  35.   nnml nnmh)
  36.  
  37. (defvoo nndir-directory nil
  38.   "Where nndir will look for groups."
  39.   nnml-current-directory nnmh-current-directory)
  40.  
  41. (defvoo nndir-nov-is-evil nil
  42.   "*Non-nil means that nndir will never retrieve NOV headers."
  43.   nnml-nov-is-evil)
  44.  
  45.  
  46.  
  47. (defvoo nndir-current-group "" nil nnml-current-group nnmh-current-group)
  48. (defvoo nndir-top-directory nil nil nnml-directory nnmh-directory)
  49. (defvoo nndir-get-new-mail nil nil nnml-get-new-mail nnmh-get-new-mail)
  50.  
  51. (defvoo nndir-status-string "" nil nnmh-status-string)
  52. (defconst nndir-version "nndir 1.0")
  53.  
  54.  
  55.  
  56. ;;; Interface functions.
  57.  
  58. (nnoo-define-basics nndir)
  59.  
  60. (deffoo nndir-open-server (server &optional defs)
  61.   (setq nndir-directory
  62.     (or (cadr (assq 'nndir-directory defs))
  63.         server))
  64.   (unless (assq 'nndir-directory defs)
  65.     (push `(nndir-directory ,server) defs))
  66.   (push `(nndir-current-group
  67.       ,(file-name-nondirectory (directory-file-name nndir-directory)))
  68.     defs)
  69.   (push `(nndir-top-directory
  70.       ,(file-name-directory (directory-file-name nndir-directory)))
  71.     defs)
  72.   (nnoo-change-server 'nndir server defs)
  73.   (let (err)
  74.     (cond 
  75.      ((not (condition-case arg
  76.            (file-exists-p nndir-directory)
  77.          (ftp-error (setq err (format "%s" arg)))))
  78.       (nndir-close-server)
  79.       (nnheader-report 
  80.        'nndir (or err "No such file or directory: %s" nndir-directory)))
  81.      ((not (file-directory-p (file-truename nndir-directory)))
  82.       (nndir-close-server)
  83.       (nnheader-report 'nndir "Not a directory: %s" nndir-directory))
  84.      (t
  85.       (nnheader-report 'nndir "Opened server %s using directory %s"
  86.                server nndir-directory)
  87.       t))))
  88.  
  89. (nnoo-map-functions nndir
  90.   (nnml-retrieve-headers 0 nndir-current-group 0 0)
  91.   (nnmh-request-article 0 nndir-current-group 0 0)
  92.   (nnmh-request-group nndir-current-group 0 0)
  93.   (nnmh-close-group nndir-current-group 0)
  94.   (nnmh-request-list (nnoo-current-server 'nndir) nndir-directory)
  95.   (nnmh-request-newsgroups (nnoo-current-server 'nndir) nndir-directory))
  96.  
  97. (provide 'nndir)
  98.  
  99. ;;; nndir.el ends here
  100.